package br.edu.unicentro.mymib.entity;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.NoResultException;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Query;

import br.edu.unicentro.mymib.base.EMFactory;
import br.edu.unicentro.mymib.base.EntityManagerService;

@Entity
@NamedQueries( { @NamedQuery(name = "sistema.find", query = "from Sistema") })
public class Sistema {

	@Id
	@GeneratedValue
	private Long id;

	@OneToOne(cascade = CascadeType.ALL)
	@PrimaryKeyJoinColumn
	private Administrador autor;

	private String tema;
	private String descricao;
	private String titulo;
	private String estilo;
	private int quantidadePostsPagina;

	public static Sistema carregar() {
		EntityManager em = EMFactory.getManager();
		Query query = em.createNamedQuery("sistema.find");
		try {
			return (Sistema) query.getSingleResult();
		} catch (NoResultException e) {
			
			Sistema sistema = new Sistema();

			sistema = new Sistema();
			sistema.setAutor(Administrador.buscar());
			sistema.setEstilo("1");
			sistema.setDescricao("Descreva o seu microblog");
			sistema.setQuantidadePostsPagina(10);
			sistema.setTema("Defina o tema do microblog");
			sistema.setTitulo("Defina o titulo do microblog");
			
			try {
				return (Sistema) EntityManagerService.salvar(sistema);
			} catch (Exception ex) {
				ex.printStackTrace();
				return null;
			}
		}
	}

	public Sistema() {
	}

	public Administrador getAutor() {
		return autor;
	}

	public void salvar() throws Exception {
		EntityManagerService.salvar(this);
	}

	public String getTema() {
		return tema;
	}

	public void setTema(String tema) {
		this.tema = tema;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public String getEstilo() {
		return estilo;
	}

	public void setEstilo(String estilo) {
		this.estilo = estilo;
	}

	public int getQuantidadePostsPagina() {
		return quantidadePostsPagina;
	}

	public void setQuantidadePostsPagina(int quantidadePostsPagina) {
		this.quantidadePostsPagina = quantidadePostsPagina;
	}

	public void setAutor(Administrador autor) {
		this.autor = autor;
	}

}
